home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / xmms / plugin.h < prev    next >
C/C++ Source or Header  |  2005-12-20  |  8KB  |  160 lines

  1. /*  XMMS - Cross-platform multimedia player
  2.  *  Copyright (C) 1998-2000  Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies
  3.  *
  4.  * Redistribution and use in source and binary forms, with or without
  5.  * modification, are permitted provided that the following conditions are
  6.  * met: 1. Redistributions of source code must retain the above copyright
  7.  * notice, this list of conditions and the following disclaimer. 2.
  8.  * Redistributions in binary form must reproduce the above copyright notice,
  9.  * this list of conditions and the following disclaimer in the documentation
  10.  * and/or other materials provided with the distribution.
  11.  *
  12.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
  13.  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  14.  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  15.  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
  16.  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  17.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  18.  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  19.  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  20.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  21.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  22.  * SUCH DAMAGE.
  23.  */
  24. #ifndef PLUGIN_H
  25. #define PLUGIN_H
  26.  
  27. #include <glib.h>
  28.  
  29. typedef enum
  30. {
  31.     FMT_U8, FMT_S8, FMT_U16_LE, FMT_U16_BE, FMT_U16_NE, FMT_S16_LE, FMT_S16_BE, FMT_S16_NE
  32. }
  33. AFormat;
  34.  
  35. typedef struct
  36. {
  37.     void *handle;        /* Filled in by xmms */
  38.     char *filename;        /* Filled in by xmms */
  39.     char *description;    /* The description that is shown in the preferences box */
  40.     void (*init) (void);
  41.     void (*about) (void);    /* Show the about box */
  42.     void (*configure) (void);    /* Show the configuration dialog */
  43.     void (*get_volume) (int *l, int *r);
  44.     void (*set_volume) (int l, int r);    /* Set the volume */
  45.     int (*open_audio) (AFormat fmt, int rate, int nch);    /* Open the device, if the device can't handle the given 
  46.                                    parameters the plugin is responsible for downmixing
  47.                                    the data to the right format before outputting it */
  48.     void (*write_audio) (void *ptr, int length);    /* The input plugin calls this to write data to the output 
  49.                                buffer */
  50.     void (*close_audio) (void);    /* No comment... */
  51.     void (*flush) (int time);    /* Flush the buffer and set the plugins internal timers to time */
  52.     void (*pause) (short paused);    /* Pause or unpause the output */
  53.     int (*buffer_free) (void);    /* Return the amount of data that can be written to the buffer,
  54.                        two calls to this without a call to write_audio should make
  55.                        the plugin output audio directly */
  56.     int (*buffer_playing) (void);    /* Returns TRUE if the plugin currently is playing some audio,
  57.                        otherwise return FALSE */
  58.     int (*output_time) (void);    /* Return the current playing time */
  59.     int (*written_time) (void);    /* Return the length of all the data that has been written to
  60.                        the buffer */
  61. }
  62. OutputPlugin;
  63.  
  64. typedef struct
  65. {
  66.     void *handle;        /* Filled in by xmms */
  67.     char *filename;        /* Filled in by xmms */
  68.     char *description;    /* The description that is shown in the preferences box */
  69.     void (*init) (void);    /* Called when the plugin is loaded */
  70.     void (*cleanup) (void);    /* Called when the plugin is unloaded */
  71.     void (*about) (void);    /* Show the about box */
  72.     void (*configure) (void);    /* Show the configure box */
  73.     int (*mod_samples) (gpointer *data, gint length, AFormat fmt, gint srate, gint nch);    /* Modify samples */
  74.     void (*query_format) (AFormat *fmt,gint *rate, gint *nch);
  75. }
  76. EffectPlugin;
  77.  
  78. typedef enum
  79. {
  80.     INPUT_VIS_ANALYZER, INPUT_VIS_SCOPE, INPUT_VIS_VU, INPUT_VIS_OFF
  81. }
  82. InputVisType;
  83.  
  84. typedef struct
  85. {
  86.     void *handle;        /* Filled in by xmms */
  87.     char *filename;        /* Filled in by xmms */
  88.     char *description;    /* The description that is shown in the preferences box */
  89.     void (*init) (void);    /* Called when the plugin is loaded */
  90.     void (*about) (void);    /* Show the about box */
  91.     void (*configure) (void);
  92.     int (*is_our_file) (char *filename);    /* Return 1 if the plugin can handle the file */
  93.     GList *(*scan_dir) (char *dirname);    /* Look in Input/cdaudio/cdaudio.c to see how */
  94.     /* to use this */
  95.     void (*play_file) (char *filename);    /* Guess what... */
  96.     void (*stop) (void);    /* Tricky one */
  97.     void (*pause) (short paused);    /* Pause or unpause */
  98.     void (*seek) (int time);    /* Seek to the specified time */
  99.     void (*set_eq) (int on, float preamp, float *bands);    /* Set the equalizer, most plugins won't be able to do this */
  100.     int (*get_time) (void);    /* Get the time, usually returns the output plugins output time */
  101.     void (*get_volume) (int *l, int *r);    /* Input-plugin specific volume functions, just provide a NULL if */
  102.     void (*set_volume) (int l, int r);    /*  you want the output plugin to handle it */
  103.     void (*cleanup) (void);            /* Called when xmms exit */
  104.     InputVisType (*get_vis_type) (void); /* OBSOLETE, DO NOT USE! */
  105.     void (*add_vis_pcm) (int time, AFormat fmt, int nch, int length, void *ptr); /* Send data to the visualization plugins 
  106.                                             Preferably 512 samples/block */
  107.     void (*set_info) (char *title, int length, int rate, int freq, int nch);    /* Fill in the stuff that is shown in the player window
  108.                                                set length to -1 if it's unknown. Filled in by xmms */
  109.     void (*set_info_text) (char *text);    /* Show some text in the song title box in the main window,
  110.                            call it with NULL as argument to reset it to the song title.
  111.                            Filled in by xmms */
  112.     void (*get_song_info) (char *filename, char **title, int *length);    /* Function to grab the title string */
  113.     void (*file_info_box) (char *filename);        /* Bring up an info window for the filename passed in */
  114.     OutputPlugin *output;    /* Handle to the current output plugin. Filled in by xmms */
  115. }
  116. InputPlugin;
  117.  
  118. /* So that input plugins can get the title formatting information */
  119. gchar *xmms_get_gentitle_format(void);
  120.  
  121. /* So that output plugins can communicate with effect plugins */
  122. EffectPlugin *get_current_effect_plugin(void);
  123. int effects_enabled(void);
  124.  
  125. typedef struct
  126. {
  127.     void *handle;        /* Filled in by xmms */
  128.     char *filename;        /* Filled in by xmms */
  129.     int xmms_session;    /* The session ID for attaching to the control socket */
  130.     char *description;    /* The description that is shown in the preferences box */
  131.     void (*init) (void);    /* Called when the plugin is enabled */
  132.     void (*about) (void);    /* Show the about box */
  133.     void (*configure) (void);
  134.     void (*cleanup) (void);    /* Called when the plugin is disabled or when xmms exits */
  135. }
  136. GeneralPlugin;
  137.  
  138. typedef struct _VisPlugin
  139. {
  140.     void *handle;     /* Filled in by xmms */
  141.     char *filename; /* Filled in by xmms */
  142.     int xmms_session; /* The session ID for attaching to the control socket */
  143.     char *description; /* The description that is shown in the preferences box */
  144.     int num_pcm_chs_wanted; /* Numbers of PCM channels wanted in the call to render_pcm */
  145.     int num_freq_chs_wanted; /* Numbers of freq channels wanted in the call to render_freq */
  146.     void (*init)(void); /* Called when the plugin is enabled */
  147.     void (*cleanup)(void); /* Called when the plugin is disabled */
  148.     void (*about)(void); /* Show the about box */
  149.     void (*configure)(void); /* Show the configure box */
  150.     void (*disable_plugin)(struct _VisPlugin *); /* Call this with a pointer to your plugin to disable the plugin */
  151.     void (*playback_start)(void); /* Called when playback starts */
  152.     void (*playback_stop)(void); /* Called when playback stops */
  153.     void (*render_pcm)(gint16 pcm_data[2][512]); /* Render the PCM data, don't do anything time consuming in here */
  154.     void (*render_freq)(gint16 freq_data[2][256]); /* Render the freq data, don't do anything time consuming in here */
  155. } VisPlugin;
  156.  
  157. void set_song_position(int pos, int first, int last);
  158.  
  159. #endif
  160.